package com.cjack.frenchexcel.util;

import org.apache.commons.lang3.StringUtils;

import java.io.File;
import java.util.Date;
import java.util.UUID;

public class FileUtils {

    /**
     * 获取文件后缀
     *
     * @param fileName
     * @return
     */
    private static String getSuffix(String fileName) {
        return fileName.substring(fileName.lastIndexOf("."));
    }

    /**
     * 生成新的文件名
     *
     * @param fileOriginName 源文件名
     * @return
     */
    public static String getFileName(String fileOriginName) {
        return UUID.randomUUID() + getSuffix(fileOriginName);
    }

    /**
     * 生成新的xlsx文件名
     *
     * @return
     */
    public static String getXlsxFileName() {
        //     return UUID.randomUUID() + ".xlsx";
        return UUID.randomUUID() + ".xls";
    }

    /**
     * 生成新的xlsx文件名
     *
     * @return
     */
    public static String getZipFileName() {
        return UUID.randomUUID() + ".zip";
    }

    /**
     * 生成新的pdf文件名
     *
     * @return
     */
    public static String getPdfFileName() {
        return UUID.randomUUID() + ".pdf";
    }

    /**
     * 生成新的随机数路径名
     *
     * @return
     */
    public static String getRandomPath() {
        //     return UUID.randomUUID() + ".xlsx";
        return UUID.randomUUID() + "";
    }

    /**
     * 根据年月日获取目录的路径
     *
     * @return
     */
    public static String getDirByDate() {
        return DateFormatUtil.format(new Date(), DateFormatUtil.DATE_RULE_2);
    }

    /**
     * 判断如果对应的目录不存在则自动创建
     *
     * @param dir
     */
    public static void handleDir(String dir) {
        File file = new File(dir);
        if (!file.exists()) {
            file.mkdirs();
        }
    }

    /**
     * 递归删除目录及其下面的所有目录和文件
     *
     * @param dir
     */
    public static void delDir(String dir) {
        File dirFile = new File(dir);
        if (dirFile.isDirectory()) {
            String[] children = dirFile.list();
            for (int i = 0; i < children.length; i++) {
                delDir(dir + "/" + children[i]);
            }
        }
        dirFile.delete();
    }


    /**
     * 将客户端访问路径
     *
     * @param clientFileUrl
     * @return
     */
    public static String transferClientFileUrl(String clientFileUrl, String baseClientDir, String baseServerDir) {
        String newUrl = "";
        String[] urlArr = clientFileUrl.split(";");
        for (String url : urlArr) {
            try {
                if (url.contains(baseClientDir)) {
                    newUrl += baseServerDir + url.split(baseClientDir)[1] + ";";
                }
            } catch (Exception ex) {
                ex.printStackTrace();
            }
        }
        if (StringUtils.isNotBlank(newUrl)) {
            newUrl = newUrl.substring(0, newUrl.length() - 1);
        }
        return newUrl;
    }
}
